﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Sige
{
    public partial class AltaPersonas : Form
    {
        DataTable codtipodoc = new DataTable();
        DataTable nacionalidades = new DataTable();
        DataTable nivel = new DataTable();
        DataTable localidades = new DataTable();
        Tipos_documento tipodoc = new Tipos_documento();
        Nacionalidades nac = new Nacionalidades();
        Niveles_estudio niv = new Niveles_estudio();
        Clase_Localidades loc = new Clase_Localidades();
        DateTime fechanacim = new DateTime();
        Funciones_Varias fv = new Funciones_Varias();

        public AltaPersonas()
        {
            InitializeComponent();
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            if (btnGrabar.Enabled == false)
            {
                if (MessageBox.Show("¿Desea ingresar un nuevo registro?", "Cerrar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    fv.Limpiar_Todos_Los_Textbox(this);
                    cboCodTipoDocumento.Focus();
                }
                else AltaPersonas.ActiveForm.Close();
            }
            else
            {
                if (MessageBox.Show("No ha completado todos los campos requeridos. ¿Desea continuar ingresando datos?", "Atención", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning) == DialogResult.No)
                    AltaPersonas.ActiveForm.Close();
                else
                    fv.primerControlEnBlanco(this).Focus();
            }
        }

        private void AltaPersonas_Load(object sender, EventArgs e)
        {
            //CARGA TODOS LOS DATATABLES:
            codtipodoc = tipodoc.ObtenerTablaTiposDoc();
            nac.Obtener_Tabla_Nacionalidades(ref nacionalidades);
            niv.Obtener_Nivel_Estudio(ref nivel);
            //AHORA CARGA TODOS LOS COMBOS:
            fv.Carga_Combos(ref cboCodTipoDocumento, codtipodoc, "tipodocumento", "descripcion");
            fv.Carga_Combos(ref cboCodNacionalidad, nacionalidades, "codigo", "pais");
            fv.Carga_Combos(ref cboCodNivelEstudio, nivel, "codigo", "titulo");
        }

        private void cboCodTipoDocumento_Leave(object sender, EventArgs e)
        {
            Tipos_documento tipodoc = new Tipos_documento();
            if (cboCodTipoDocumento.Text != "")
                txtMostrarTipoDocum.Text = tipodoc.ObtenerDescripcion(cboCodTipoDocumento.Text);
            else
            {
                MessageBox.Show("Debe ingresar un código de documento", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                cboCodTipoDocumento.Focus();
            }
        }

        private void cboCodNacionalidad_Leave(object sender, EventArgs e)
        {
            if (cboCodNacionalidad.Text != "")
            {
                txtMostrarNacionalidad.Text = cboCodNacionalidad.SelectedValue.ToString();
            }
            else txtMostrarNacionalidad.Text = "";
        }

        private void cboCodNivelEstudio_Leave(object sender, EventArgs e)
        {
            if (cboCodNivelEstudio.Text != "")
            {
                txtMostrarNivelEst.Text = cboCodNivelEstudio.SelectedValue.ToString();
            }
            else
                txtMostrarNivelEst.Text = "";
        }

        private void txtCodPostal_Leave(object sender, EventArgs e)
        {
            if (txtCodPostal.Text != "")
            {
                Accesoadatos datos = new Accesoadatos();
                string nombre = "";
                if (loc.Localidad_Existente(datos.getruta(), txtCodPostal.Text.ToString(), ref nombre) == true)
                    txtMostrarLocalidad.Text = nombre;
                else
                {
                    if (MessageBox.Show("La localidad seleccionada no existe. ¿Desea ingresarla?", "No se encontró localidad", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        AltaLocalidades altaloc = new AltaLocalidades(txtCodPostal.Text);
                        altaloc.Show();
                    }
                    else
                    {
                        txtCodPostal.Clear();
                        txtCodPostal.Focus();
                    }
                }
            }
            else
            {
                MessageBox.Show("Debe ingresar un código postal", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtCodPostal.Focus();
            }
        }

        private void cboCodTipoDocumento_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btnGrabar_Click(object sender, EventArgs e)
        {
            if (fv.Validar_Todo(this, ref fechanacim) == true)
            {
                Persona person = new Persona(cboCodTipoDocumento.Text, txtNroDocumento.Text,
                        txtNombre.Text, txtApellido.Text, txtDireccion.Text, txtCodPostal.Text,
                        txtTelefono.Text, txtEmail.Text, fechanacim, cboCodNacionalidad.Text,
                        cboCodNivelEstudio.Text);
                if (person.Insertar() == true)
                {
                    if (MessageBox.Show("El registro ha sido grabado con éxito. ¿Desea ingresar un nuevo registro?", "El registro se grabó", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                    {
                        fv.Limpiar_Todos_Los_Textbox(this);
                        cboCodTipoDocumento.Focus();
                    }
                    else this.Close();
                }
            }
            else
            {
                MessageBox.Show("No se pudo grabar Persona", "Error al grabar Persona", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
       
        private void label17_Click(object sender, EventArgs e)
        {

        }

        private void label16_Click(object sender, EventArgs e)
        {

        }

        private void txtNroDocumento_Leave(object sender, EventArgs e)
        {
            Persona person = new Persona();
            string numdoc = txtNroDocumento.Text;
            if (numdoc != "")
            {
                fv.Sacar_Ceros_Izquierda(ref numdoc);
            }
            if (person.Persona_Existente(cboCodTipoDocumento.Text, numdoc) == true)
            {
                MessageBox.Show("La persona ya existe", "Error al ingresar Persona", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtNroDocumento.Clear();
                txtNroDocumento.Focus();
            }
        }

        private void txtCodPostal_Validated(object sender, EventArgs e)
        {
            if (txtCodPostal.Text != "")
            {
                Accesoadatos datos = new Accesoadatos();
                string nombre = "";
                if (loc.Localidad_Existente(datos.getruta(), txtCodPostal.Text.ToString(), ref nombre) == true)
                    txtMostrarLocalidad.Text = nombre;
                else
                {
                    if (MessageBox.Show("La localidad seleccionada no existe. ¿Desea ingresarla?", "No se encontró localidad", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        AltaLocalidades altaloc = new AltaLocalidades(txtCodPostal.Text);
                        altaloc.Show();
                    }
                    else
                    {
                        txtCodPostal.Clear();
                        txtCodPostal.Focus();
                    }
                }
            }
            else
            {
                MessageBox.Show("Debe ingresar un código postal", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                txtCodPostal.Focus();
            }
        }
  }
}